﻿CREATE OR REPLACE FUNCTION abm_Factura(bandera integer, cidempleado integer, 
cidtipo_pago integer, cfecha date, cfecha_pago date, csubtotal integer, cisv integer, 
ctotal integer, cidcliente integer, cnombre character varying, cdireccion character varying, 
cidrepuesto integer[], ccantidad integer[],tamano integer)
  RETURNS boolean AS
$BODY$
declare
ultimo_id_c integer;
ultimo_id_v integer;
bool boolean:=false;
i integer;
 begin
i:=0;
case bandera 
	when 1 then

INSERT INTO clientes(nombre, direccion)
    VALUES (cnombre, cdireccion);

select max(idcliente) into ultimo_id_c from clientes;
	
INSERT INTO ventas(idempleado, idcliente, idtipo_pago, fecha, fecha_pago, 
            subtotal, isv, total)
    VALUES (cidempleado, ultimo_id_c, cidtipo_pago, cfecha, cfecha_pago, 
            csubtotal, cisv, ctotal);
            
select max(idventa) into ultimo_id_v from ventas;

FOR i IN 1 .. tamano LOOP
INSERT INTO ventas_repuestos(
            idrepuesto, idventa ,cantidad)
    VALUES (cidrepuesto[i], ultimo_id_v, ccantidad[i]);
END LOOP;
bool:=true;

	when 2 then

UPDATE ventas
   SET idventa=cidventa, idempleado=cidempleado, idcliente=cidcliente, idtipo_pago=cidtipo_pago, fecha=cfecha, 
       fecha_pago=cfecha_pago, subtotal=csubtotal, isv=cisv, total=ctotal
 WHERE idventa=cidventa;

 end case;
 return bool;
 end
$BODY$
 LANGUAGE plpgsql VOLATILE

